<script setup>
import {computed, reactive} from "vue";

const author = reactive({
  name: 'John Doe',
  books: [
    'Vue 2 - Advanced Guide',
    'Vue 3 - Basic Guide',
    'Vue 4 - The Mystery'
  ]
})
const publishedBooksMessage = computed(() => {
  console.log("这是属性计算的代码，虽然调用2次，但是控制台只打印一次，因为被依赖的数据没变")
  return author.books.length > 0 ? 'yes' : 'no'
})
let hasBook = () => {
  console.log("hasBook函数")
  return author.books.length > 0 ? 'yes' : 'no'
}
</script>

<template>
  <span>{{ hasBook() }}</span><!--函数调用-->
  <span>{{ hasBook() }}</span><!--函数调用被调用2次，控制台输出2个-->
  <span>{{publishedBooksMessage}}</span><!--属性计算第一次-->
  <span>{{publishedBooksMessage}}</span><!--属性计算第二次，但是依赖的数据没有改变所以，没有被重新计算，控制台只打印一次-->
</template>

<style scoped>

</style>